/*
 * 09堆空间开辟和使用.c
 *
 *  Created on: 2024年3月13日
 *      Author: HP
 */
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

int main0809(){
	// 开辟堆空间存储数据
	int* p = (int*)malloc(sizeof(int));
	printf("%p\n", p);
	// 使用堆空间
	*p = 123;
	printf("%d\n", *p);
	// 释放堆空间，注意p必须是开辟时的地址，不要改变p的地址，不然不能释放
	// p变成了一个野指针
	free(p);
	// 避免野指针
	p = NULL;

	int* p2 = (int*)malloc(sizeof(int)*10);
	for(int i=0; i<10; i++){
		p2[i] = i;
	}
	for(int i=0; i<10; i++){
		printf("%d\n", *(p2+i));
	}
	free(p2);
	p2 = NULL;
	return 0;
}
